|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--com.caucho.server.http.AbstractRequest
Abstract request implementing methods common to the different request implementations.
| Field Summary | |
protected com.caucho.server.http.CacheInvocation |
cache
|
protected QDate |
calendar
|
static java.lang.String |
CONTEXT_PATH
|
static java.lang.String |
ERROR_URI
|
static java.lang.String |
EXCEPTION
|
protected com.caucho.server.http.Invocation |
invocation
|
static java.lang.String |
JSP_EXCEPTION
|
static java.lang.String |
MESSAGE
|
static java.lang.String |
PATH_INFO
|
static java.lang.String |
QUERY_STRING
|
static java.lang.String |
REQUEST_URI
|
static java.lang.String |
SERVLET_PATH
|
static java.lang.String |
STATUS_CODE
|
| Fields inherited from interface javax.servlet.http.HttpServletRequest |
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH |
| Constructor Summary | |
AbstractRequest()
|
|
| Method Summary | |
boolean |
authenticate()
|
protected com.caucho.http.session.SessionImpl |
createSession(boolean create,
boolean hasOldSession)
Returns the current session. |
protected void |
finish()
|
protected void |
finishSession()
|
abstract java.lang.Object |
getAttribute(java.lang.String name)
Returns the value of the named attribute as an Object,
or null if no attribute of the given name exists. |
abstract java.util.Enumeration |
getAttributeNames()
Returns an Enumeration containing the
names of the attributes available to this request. |
java.lang.String |
getAuthType()
Gets the authorization type |
CauchoApplication |
getCauchoApplication()
|
java.lang.String |
getChain(java.lang.String contentType)
|
abstract java.lang.String |
getCharacterEncoding()
Returns the name of the character encoding used in the body of this request. |
abstract int |
getContentLength()
Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not known. |
abstract java.lang.String |
getContentType()
Returns the MIME type of the body of the request, or null if the type is not known. |
abstract java.lang.String |
getContextPath()
Returns the portion of the request URI that indicates the context of the request. |
abstract Cookie |
getCookie(java.lang.String name)
|
abstract Cookie[] |
getCookies()
Returns an array containing all of the Cookie
objects the client sent with this request. |
abstract long |
getDate()
|
long |
getDateHeader(java.lang.String key)
Returns a header interpreted as a date. |
abstract java.lang.String |
getHeader(java.lang.String key)
Returns the value of the specified request header as a String. |
abstract java.util.Enumeration |
getHeaderNames()
Returns an enumeration of all the header names this request contains. |
abstract java.util.Enumeration |
getHeaders(java.lang.String name)
Returns all the values of the specified request header as an Enumeration of String objects. |
abstract ServletInputStream |
getInputStream()
Retrieves the body of the request as binary data using a ServletInputStream. |
int |
getIntHeader(java.lang.String key)
Returns the value of the specified request header as an int. |
abstract java.util.Locale |
getLocale()
Returns the preferred Locale that the client will
accept content in, based on the Accept-Language header. |
abstract java.util.Enumeration |
getLocales()
Returns an Enumeration of Locale objects
indicating, in decreasing order starting with the preferred locale, the
locales that are acceptable to the client based on the Accept-Language
header. |
java.lang.String |
getMedia()
|
abstract java.lang.String |
getMethod()
Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT. |
CharSegment |
getMethodBuffer()
|
java.lang.String |
getPageContextPath()
|
java.lang.String |
getPagePathInfo()
Returns the path-info for the current page, i.e. |
java.lang.String |
getPageQueryString()
Returns the query-string for the current page, i.e. |
java.lang.String |
getPageServletPath()
Returns the servlet-path for the current page, i.e. |
java.lang.String |
getPageURI()
|
abstract java.lang.String |
getParameter(java.lang.String name)
Returns the value of a request parameter as a String,
or null if the parameter does not exist. |
abstract java.util.Enumeration |
getParameterNames()
Returns an Enumeration of String
objects containing the names of the parameters contained
in this request. |
abstract java.lang.String[] |
getParameterValues(java.lang.String name)
Returns an array of String objects containing
all of the values the given request parameter has, or
null if the parameter does not exist. |
abstract java.lang.String |
getPathInfo()
Returns any extra path information associated with the URL the client sent when it made this request. |
abstract java.lang.String |
getPathTranslated()
Returns any extra path information after the servlet name but before the query string, and translates it to a real path. |
abstract java.lang.String |
getProtocol()
Returns the name and version of the protocol the request uses in the form protocol/majorVersion.minorVersion, for example, HTTP/1.1. |
abstract java.lang.String |
getQueryString()
Returns the query string that is contained in the request URL after the path. |
abstract java.io.BufferedReader |
getReader()
Retrieves the body of the request as character data using a BufferedReader. |
abstract java.lang.String |
getRealPath(java.lang.String path)
Deprecated. |
abstract java.lang.String |
getRemoteAddr()
Returns the Internet Protocol (IP) address of the client that sent the request. |
abstract java.lang.String |
getRemoteHost()
Returns the fully qualified name of the client that sent the request, or the IP address of the client if the name cannot be determined. |
java.lang.String |
getRemoteUser()
Gets the remote user from the authorization type |
java.lang.String |
getRemoteUser(boolean create)
Internal logging return to get the remote user. |
int |
getRequestDepth(int depth)
Returns the depth of the request calls. |
RequestDispatcher |
getRequestDispatcher(java.lang.String path)
Returns a request dispatcher relative to the current request. |
abstract java.lang.String |
getRequestedSessionId()
Returns the session ID specified by the client. |
abstract java.lang.String |
getRequestURI()
Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request. |
java.lang.StringBuffer |
getRequestURL()
Returns the URL for the request |
abstract java.lang.String |
getScheme()
Returns the name of the scheme used to make this request, for example, http, https, or ftp. |
abstract java.lang.String |
getServerName()
Returns the host name of the server that received the request. |
abstract int |
getServerPort()
Returns the port number on which this request was received. |
abstract java.lang.String |
getServletPath()
Returns the part of this request's URL that calls the servlet. |
HttpSession |
getSession()
Returns the current session, creating one if necessary. |
abstract HttpSession |
getSession(boolean create)
Returns the current session. |
abstract int |
getSessionGroup()
|
abstract ReadStream |
getStream()
|
java.security.Principal |
getUserPrincipal()
Returns the Principal representing the logged in user. |
abstract boolean |
isRequestedSessionIdFromCookie()
Checks whether the requested session ID came in as a cookie. |
boolean |
isRequestedSessionIdFromUrl()
Deprecated. |
abstract boolean |
isRequestedSessionIdFromURL()
Checks whether the requested session ID came in as part of the request URL. |
abstract boolean |
isRequestedSessionIdValid()
Checks whether the requested session ID is still valid. |
abstract boolean |
isSecure()
Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS. |
boolean |
isUserInRole(java.lang.String role)
Returns true if the user represented by the current request plays the named role. |
void |
logoutUserPrincipal()
Clear the principal from the request object. |
abstract void |
removeAttribute(java.lang.String name)
Removes an attribute from this request. |
abstract void |
setAttribute(java.lang.String name,
java.lang.Object value)
Stores an attribute in this request. |
protected void |
setHasCookie()
Set when the page actually has a cookie. |
void |
setHeader(java.lang.String key,
java.lang.String value)
|
protected void |
setVaryCookie(java.lang.String cookie)
Called if the page depends on a cookie. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface javax.servlet.ServletRequest |
getParameterMap, setCharacterEncoding |
| Field Detail |
public static java.lang.String REQUEST_URI
public static java.lang.String CONTEXT_PATH
public static java.lang.String SERVLET_PATH
public static java.lang.String PATH_INFO
public static java.lang.String QUERY_STRING
public static java.lang.String EXCEPTION
public static java.lang.String STATUS_CODE
public static java.lang.String MESSAGE
public static java.lang.String ERROR_URI
public static java.lang.String JSP_EXCEPTION
protected QDate calendar
protected com.caucho.server.http.Invocation invocation
protected com.caucho.server.http.CacheInvocation cache
| Constructor Detail |
public AbstractRequest()
| Method Detail |
public abstract ReadStream getStream()
throws java.io.IOException
getStream in interface CauchoRequestpublic int getRequestDepth(int depth)
getRequestDepth in interface CauchoRequestpublic abstract long getDate()
getDate in interface CauchoRequest
public abstract ServletInputStream getInputStream()
throws java.io.IOException
ServletRequestServletInputStream. Either this method or
ServletRequest.getReader() may be called to read the body, not both.getInputStream in interface ServletRequestjavax.servlet.ServletRequestServletInputStream object containing
the body of the requestjava.lang.IllegalStateException - if the ServletRequest.getReader() method
has already been called for this requestjava.io.IOException - if an input or output exception occurred
public abstract java.io.BufferedReader getReader()
throws java.io.IOException
ServletRequestBufferedReader. The reader translates the character
data according to the character encoding used on the body.
Either this method or ServletRequest.getReader() may be called to read the
body, not both.getReader in interface ServletRequestjavax.servlet.ServletRequestBufferedReader
containing the body of the requestjava.io.UnsupportedEncodingException - if the character set encoding
used is not supported and the
text cannot be decodedjava.lang.IllegalStateException - if ServletRequest.getInputStream() method
has been called on this requestjava.io.IOException - if an input or output exception occurredServletRequest.getInputStream()public abstract java.lang.String getServerName()
ServletRequestSERVER_NAME.getServerName in interface ServletRequestjavax.servlet.ServletRequestString containing the name
of the server to which the request was sentpublic abstract int getServerPort()
ServletRequestSERVER_PORT.getServerPort in interface ServletRequestjavax.servlet.ServletRequestpublic abstract java.lang.String getRemoteAddr()
ServletRequestREMOTE_ADDR.getRemoteAddr in interface ServletRequestjavax.servlet.ServletRequestString containing the
IP address of the client that sent the requestpublic abstract java.lang.String getRemoteHost()
ServletRequestREMOTE_HOST.getRemoteHost in interface ServletRequestjavax.servlet.ServletRequestString containing the fully qualified name
of the clientpublic abstract java.lang.String getScheme()
ServletRequesthttp, https, or ftp.
Different schemes have different rules for constructing URLs,
as noted in RFC 1738.getScheme in interface ServletRequestjavax.servlet.ServletRequestString containing the name
of the scheme used to make this requestpublic CharSegment getMethodBuffer()
public abstract java.lang.String getMethod()
HttpServletRequestgetMethod in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString
specifying the name
of the method with which
this request was madepublic abstract java.lang.String getProtocol()
ServletRequestSERVER_PROTOCOL.getProtocol in interface ServletRequestjavax.servlet.ServletRequestString containing the protocol
name and version numberpublic abstract java.lang.String getRequestURI()
HttpServletRequest
First line of HTTP request Returned Value POST /some/path.html HTTP/1.1 /some/path.html GET http://foo.bar/a.html HTTP/1.0 /a.html HEAD /xyz?a=b HTTP/1.1 /xyz
To reconstruct an URL with a scheme and host, use
HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest).
getRequestURI in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString containing
the part of the URL from the
protocol name up to the query stringHttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest)public java.lang.String getPageURI()
getPageURI in interface CauchoRequestpublic java.lang.StringBuffer getRequestURL()
getRequestURL in interface HttpServletRequestjavax.servlet.http.HttpServletRequestStringBuffer object containing
the reconstructed URLpublic abstract java.lang.String getContextPath()
HttpServletRequestgetContextPath in interface CauchoRequestjavax.servlet.http.HttpServletRequestString specifying the
portion of the request URI that indicates the context
of the requestpublic java.lang.String getPageContextPath()
getPageContextPath in interface CauchoRequestpublic abstract java.lang.String getServletPath()
HttpServletRequestgetServletPath in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString containing
the name or path of the servlet being
called, as specified in the request URL,
decoded.public java.lang.String getPageServletPath()
getPageServletPath in interface CauchoRequestpublic abstract java.lang.String getPathInfo()
HttpServletRequestnull if there
was no extra path information.
Same as the value of the CGI variable PATH_INFO.
getPathInfo in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString, decoded by the
web container, specifying
extra path information that comes
after the servlet path but before
the query string in the request URL;
or null if the URL does not have
any extra path informationpublic java.lang.String getPagePathInfo()
getPagePathInfo in interface CauchoRequestpublic abstract java.lang.String getQueryString()
HttpServletRequestnull
if the URL does not have a query string. Same as the value
of the CGI variable QUERY_STRING.getQueryString in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString containing the query
string or null if the URL
contains no query string. The value is not
decoded by the container.public java.lang.String getPageQueryString()
getPageQueryString in interface CauchoRequestpublic abstract int getContentLength()
ServletRequestgetContentLength in interface ServletRequestjavax.servlet.ServletRequestpublic abstract java.lang.String getContentType()
ServletRequestnull if the type is not known. For HTTP servlets,
same as the value of the CGI variable CONTENT_TYPE.getContentType in interface ServletRequestjavax.servlet.ServletRequestString containing the name
of the MIME type of
the request, or -1 if the type is not knownpublic abstract java.lang.String getCharacterEncoding()
ServletRequestnull if the request
does not specify a character encodinggetCharacterEncoding in interface ServletRequestjavax.servlet.ServletRequestString containing the name of
the chararacter encoding, or null
if the request does not specify a character encodingpublic abstract java.lang.String getHeader(java.lang.String key)
HttpServletRequestString. If the request did not include a header
of the specified name, this method returns null.
The header name is case insensitive. You can use
this method with any request header.getHeader in interface HttpServletRequestjavax.servlet.http.HttpServletRequestname - a String specifying the
header nameString containing the
value of the requested
header, or null
if the request does not
have a header of that name
public void setHeader(java.lang.String key,
java.lang.String value)
setHeader in interface CauchoRequestpublic CauchoApplication getCauchoApplication()
getCauchoApplication in interface CauchoRequestpublic int getIntHeader(java.lang.String key)
HttpServletRequestint. If the request does not have a header
of the specified name, this method returns -1. If the
header cannot be converted to an integer, this method
throws a NumberFormatException.
The header name is case insensitive.
getIntHeader in interface HttpServletRequestjavax.servlet.http.HttpServletRequestname - a String specifying the name
of a request headerjava.lang.NumberFormatException - If the header value
can't be converted
to an intpublic long getDateHeader(java.lang.String key)
getDateHeader in interface HttpServletRequestjavax.servlet.http.HttpServletRequestname - a String specifying the
name of the headerlong value
representing the date specified
in the header expressed as
the number of milliseconds
since January 1, 1970 GMT,
or -1 if the named header
was not included with the
reqestjava.lang.IllegalArgumentException - If the header value
can't be converted
to a dateprotected void setVaryCookie(java.lang.String cookie)
cookie - the cookie the page depends on.protected void setHasCookie()
public abstract HttpSession getSession(boolean create)
getSession in interface HttpServletRequestcreate - if true and the session doesn't exist, create a new sessionpublic HttpSession getSession()
getSession in interface HttpServletRequestjavax.servlet.http.HttpServletRequestHttpSession associated
with this requestHttpServletRequest.getSession(boolean)
protected com.caucho.http.session.SessionImpl createSession(boolean create,
boolean hasOldSession)
create - true if a new session should be createdpublic abstract int getSessionGroup()
public abstract java.lang.String getRequestedSessionId()
HttpServletRequestnull.getRequestedSessionId in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString specifying the session
ID, or null if the request did
not specify a session IDHttpServletRequest.isRequestedSessionIdValid()public abstract boolean isRequestedSessionIdValid()
HttpServletRequestisRequestedSessionIdValid in interface HttpServletRequestjavax.servlet.http.HttpServletRequesttrue if this
request has an id for a valid session
in the current session context;
false otherwiseHttpServletRequest.getRequestedSessionId(),
HttpServletRequest.getSession(boolean),
HttpSessionContextpublic abstract boolean isRequestedSessionIdFromCookie()
HttpServletRequestisRequestedSessionIdFromCookie in interface HttpServletRequestjavax.servlet.http.HttpServletRequesttrue if the session ID
came in as a
cookie; otherwise, falseHttpServletRequest.getSession(boolean)public abstract boolean isRequestedSessionIdFromURL()
HttpServletRequestisRequestedSessionIdFromURL in interface HttpServletRequestjavax.servlet.http.HttpServletRequesttrue if the session ID
came in as part of a URL; otherwise,
falseHttpServletRequest.getSession(boolean)public boolean isRequestedSessionIdFromUrl()
isRequestedSessionIdFromUrl in interface HttpServletRequestpublic abstract java.util.Enumeration getHeaderNames()
HttpServletRequestSome servlet containers do not allow do not allow
servlets to access headers using this method, in
which case this method returns null
getHeaderNames in interface HttpServletRequestjavax.servlet.http.HttpServletRequestnullpublic abstract java.util.Enumeration getAttributeNames()
ServletRequestEnumeration containing the
names of the attributes available to this request.
This method returns an empty Enumeration
if the request has no attributes available to it.getAttributeNames in interface ServletRequestjavax.servlet.ServletRequestEnumeration of strings
containing the names
of the request's attributespublic abstract java.lang.Object getAttribute(java.lang.String name)
ServletRequestObject,
or null if no attribute of the given name exists.
Attributes can be set two ways. The servlet container may set
attributes to make available custom information about a request.
For example, for requests made using HTTPS, the attribute
javax.servlet.request.X509Certificate can be used to
retrieve information on the certificate of the client. Attributes
can also be set programatically using
ServletRequest.setAttribute(java.lang.String, java.lang.Object). This allows information to be
embedded into a request before a RequestDispatcher call.
Attribute names should follow the same conventions as package
names. This specification reserves names matching java.*,
javax.*, and sun.*.
getAttribute in interface ServletRequestjavax.servlet.ServletRequestname - a String specifying the name of
the attributeObject containing the value
of the attribute, or null if
the attribute does not exist
public abstract void setAttribute(java.lang.String name,
java.lang.Object value)
ServletRequestRequestDispatcher.
Attribute names should follow the same conventions as
package names. Names beginning with java.*,
javax.*, and com.sun.*, are
reserved for use by Sun Microsystems.
setAttribute in interface ServletRequestjavax.servlet.ServletRequestname - a String specifying
the name of the attributeo - the Object to be storedpublic abstract void removeAttribute(java.lang.String name)
ServletRequestAttribute names should follow the same conventions as
package names. Names beginning with java.*,
javax.*, and com.sun.*, are
reserved for use by Sun Microsystems.
removeAttribute in interface CauchoRequestjavax.servlet.ServletRequestname - a String specifying
the name of the attribute to removepublic abstract java.util.Enumeration getParameterNames()
ServletRequestEnumeration of String
objects containing the names of the parameters contained
in this request. If the request has
no parameters, the method returns an
empty Enumeration.getParameterNames in interface ServletRequestjavax.servlet.ServletRequestEnumeration of String
objects, each String containing
the name of a request parameter; or an
empty Enumeration if the
request has no parameterspublic abstract java.lang.String[] getParameterValues(java.lang.String name)
ServletRequestString objects containing
all of the values the given request parameter has, or
null if the parameter does not exist.
If the parameter has a single value, the array has a length of 1.
getParameterValues in interface ServletRequestjavax.servlet.ServletRequestname - a String containing the name of
the parameter whose value is requestedString objects
containing the parameter's valuesServletRequest.getParameter(java.lang.String)public abstract java.lang.String getParameter(java.lang.String name)
ServletRequestString,
or null if the parameter does not exist. Request parameters
are extra information sent with the request. For HTTP servlets,
parameters are contained in the query string or posted form data.
You should only use this method when you are sure the
parameter has only one value. If the parameter might have
more than one value, use ServletRequest.getParameterValues(java.lang.String).
If you use this method with a multivalued
parameter, the value returned is equal to the first value
in the array returned by getParameterValues.
If the parameter data was sent in the request body, such as occurs
with an HTTP POST request, then reading the body directly via ServletRequest.getInputStream() or ServletRequest.getReader() can interfere
with the execution of this method.
getParameter in interface ServletRequestjavax.servlet.ServletRequestname - a String specifying the
name of the parameterString representing the
single value of the parameterServletRequest.getParameterValues(java.lang.String)public abstract Cookie[] getCookies()
HttpServletRequestCookie
objects the client sent with this request.
This method returns null if no cookies were sent.getCookies in interface HttpServletRequestjavax.servlet.http.HttpServletRequestCookies
included with this request, or null
if the request has no cookiespublic abstract Cookie getCookie(java.lang.String name)
getCookie in interface CauchoRequestpublic abstract java.lang.String getRealPath(java.lang.String path)
getRealPath in interface ServletRequestpublic abstract java.lang.String getPathTranslated()
HttpServletRequestIf the URL does not have any extra path information,
this method returns null.
The web container does not decode thins string.
getPathTranslated in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString specifying the
real path, or null if
the URL does not have any extra path
informationpublic abstract java.util.Enumeration getHeaders(java.lang.String name)
HttpServletRequestEnumeration of String objects.
Some headers, such as Accept-Language can be sent
by clients as several headers each with a different value rather than
sending the header as a comma separated list.
If the request did not include any headers
of the specified name, this method returns an empty
Enumeration.
The header name is case insensitive. You can use
this method with any request header.
getHeaders in interface HttpServletRequestjavax.servlet.http.HttpServletRequestname - a String specifying the
header nameEnumeration containing
the values of the requested header. If
the request does not have any headers of
that name return an empty
enumeration. If
the container does not allow access to
header information, return nullpublic abstract java.util.Locale getLocale()
ServletRequestLocale that the client will
accept content in, based on the Accept-Language header.
If the client request doesn't provide an Accept-Language header,
this method returns the default locale for the server.getLocale in interface ServletRequestjavax.servlet.ServletRequestLocale for the clientpublic abstract java.util.Enumeration getLocales()
ServletRequestEnumeration of Locale objects
indicating, in decreasing order starting with the preferred locale, the
locales that are acceptable to the client based on the Accept-Language
header.
If the client request doesn't provide an Accept-Language header,
this method returns an Enumeration containing one
Locale, the default locale for the server.getLocales in interface ServletRequestjavax.servlet.ServletRequestEnumeration of preferred
Locale objects for the clientpublic abstract boolean isSecure()
ServletRequestisSecure in interface CauchoRequestjavax.servlet.ServletRequest
protected void finishSession()
throws java.io.IOException
protected void finish()
throws java.io.IOException
public RequestDispatcher getRequestDispatcher(java.lang.String path)
getRequestDispatcher in interface CauchoRequestpath - the relative uri to the new servlet.public java.lang.String getChain(java.lang.String contentType)
getChain in interface CauchoRequestpublic java.lang.String getMedia()
getMedia in interface CauchoRequestpublic java.lang.String getAuthType()
getAuthType in interface HttpServletRequestjavax.servlet.http.HttpServletRequestnull if the request was
not authenticated.public java.lang.String getRemoteUser(boolean create)
public boolean authenticate()
throws ServletException,
java.io.IOException
public java.lang.String getRemoteUser()
getRemoteUser in interface HttpServletRequestjavax.servlet.http.HttpServletRequestString specifying the login
of the user making this request, or null
public java.security.Principal getUserPrincipal()
getUserPrincipal in interface HttpServletRequestcom.caucho.security.SecurityContextProviderpublic void logoutUserPrincipal()
public boolean isUserInRole(java.lang.String role)
isUserInRole in interface CauchoRequestrole - the named role to test.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||